🐧 Linux 命令与运维终极手册(2025 完整版)
✅ 覆盖文件操作、系统监控、网络、服务管理、定时任务、自定义服务等 ✅ 所有命令均经验证,可直接复制使用 ✅ 适用于 Ubuntu / CentOS / Debian 等主流发行版
一、📁 文件与目录操作
命令 | 说明 |
---|---|
ls | 列出当前目录下的文件和目录 |
ls -a | 显示包括隐藏文件(以 . 开头)在内的所有内容 |
ls -l | 以详细格式列出文件(权限、所有者、大小、时间等) |
ls -la | 详细格式 + 显示隐藏文件 |
ls -lt | 按修改时间排序(最新在前) |
ls -ltr | 按修改时间逆序(最新在后) |
ls -lS | 按文件大小降序排列 |
ls -lX | 按文件扩展名/类型排序 |
pwd | 显示当前工作目录的完整路径 |
cd 目录名 | 进入指定目录 |
cd .. | 返回上一级目录 |
cd ../.. | 返回上两级目录 |
mkdir 目录名 | 创建一个新目录 |
mkdir -p a/b/c | 递归创建多级目录(若父目录不存在则自动创建) |
rmdir 目录名 | 删除空目录 |
rm 文件名 | 删除文件 |
rm -r 目录名 | 递归删除非空目录及其内容(⚠️谨慎使用) |
rm -f 文件名 | 强制删除(不提示确认) |
cp 源文件 目标文件 | 复制文件 |
cp -r 源目录 目标目录 | 递归复制整个目录 |
mv 旧名称 新名称 | 重命名文件或目录 |
mv 源文件 目标路径 | 移动文件或目录 |
find /path -name "文件名" | 在指定路径下按名称查找文件(支持通配符如 *.log ) |
二、📄 文件内容查看与文本处理
命令 | 说明 |
---|---|
cat 文件名 | 显示文件全部内容(适合小文件) |
less 文件名 | 分页查看文件(按 q 退出,/关键词 搜索) |
more 文件名 | 简单分页查看(仅支持向下翻页) |
head 文件名 | 显示文件前 10 行 |
head -n N 文件名 | 显示文件前 N 行 |
tail 文件名 | 显示文件后 10 行 |
tail -n N 文件名 | 显示文件后 N 行 |
tail -f 文件名 | 实时跟踪文件末尾内容(常用于日志监控,按 Ctrl+C 退出) |
grep "关键词" 文件名 | 在文件中搜索包含关键词的行 |
grep -n "关键词" 文件名 | 搜索并显示行号 |
grep -r "关键词" /路径/ | 递归搜索目录下所有文件 |
grep -i "关键词" 文件名 | 忽略大小写搜索 |
sed 's/旧文本/新文本/g' 文件名 | 替换文本(不修改原文件,仅输出结果) |
awk '{print $1}' 文件名 | 提取每行的第一列(默认以空格分隔) |
wc -l 文件名 | 统计文件行数 |
三、🖥️ 系统信息查看
命令 | 说明 |
---|---|
whoami | 显示当前登录用户名 |
date | 显示当前系统日期和时间 |
date "+%Y-%m-%d %H:%M:%S" | 自定义时间格式输出(常用于脚本) |
date -Iseconds | 输出 ISO 8601 格式时间(如 2025-10-13T09:00:00+08:00 ) |
date -R | 输出 RFC 2822 格式时间(用于邮件、HTTP 头) |
uname -a | 显示内核版本、主机名、系统架构等完整信息 |
hostname | 显示当前主机名 |
uptime | 显示系统运行时间及 1/5/15 分钟负载平均值 |
df -h | 以人类可读方式(KB/MB/GB)显示磁盘空间使用情况 |
du -h 目录名 | 显示指定目录的磁盘使用量 |
free -h | 以人类可读方式显示内存和交换空间使用情况 |
四、⚙️ 进程与端口管理
命令 | 说明 |
---|---|
ps aux | 显示所有进程的详细信息 |
ps aux | grep 进程名 | 查找特定进程 |
top | 实时动态查看系统资源和进程(按 q 退出) |
htop | 更友好的交互式进程查看器(需安装:sudo apt install htop ) |
kill PID | 终止指定进程(PID 为进程 ID) |
kill -9 PID | 强制终止进程(不可被捕获) |
netstat -tuln | 显示所有监听的 TCP/UDP 端口(传统命令) |
ss -tuln | 更快的现代替代命令(推荐) |
netstat -tuln | grep :8080 | 查看 8080 端口是否被监听 |
lsof -i :端口号 | 查看占用指定端口的进程(如 lsof -i :3306 ) |
fuser 8080/tcp | 显示使用 8080 TCP 端口的进程 ID |
sudo kill -9 $(lsof -t -i:8080) | 一键杀死占用 8080 端口的进程 |
五、📦 打包与解压
5.1 tar 格式(未压缩)
命令 | 说明 |
---|---|
tar -cvf archive.tar 目录/ | 打包目录为 .tar 文件 |
tar -xvf archive.tar | 解压 .tar 文件 |
tar -xvf archive.tar -C /目标目录 | 解压到指定目录 |
5.2 tar.gz 格式(gzip 压缩)
命令 | 说明 |
---|---|
tar -czvf archive.tar.gz 目录/ | 打包并压缩为 .tar.gz |
tar -xzvf archive.tar.gz | 解压 .tar.gz 文件 |
tar -xzvf archive.tar.gz -C /目标目录 | 解压到指定目录 |
5.3 zip 格式(跨平台兼容)
命令 | 说明 |
---|---|
zip -r archive.zip 目录/ | 压缩目录为 .zip 文件 |
unzip archive.zip | 解压 .zip 文件 |
unzip archive.zip -d /目标目录 | 解压到指定目录 |
💡 提示:
.tar.gz
压缩率高,适合 Linux;.zip
兼容 Windows/macOS。
六、🌐 远程操作
命令 | 说明 |
---|---|
ssh 用户名@服务器IP | 远程登录服务器(如 ssh user@192.168.1.100 ) |
exit | 退出 SSH 会话 |
scp 本地文件 user@host:/远程路径 | 从本地复制文件到远程服务器 |
scp -r 本地目录 user@host:/远程路径 | 递归复制整个目录到远程 |
scp user@host:/远程文件 ./本地目录/ | 从远程服务器下载文件到本地 |
scp -r user@host:/远程目录 ./本地目录/ | 从远程下载整个目录到本地 |
rsync -avz 源/ user@host:/目标/ | 高效同步文件(增量传输,推荐用于备份) |
七、⚙️ 环境变量与配置
命令 | 说明 |
---|---|
printenv | 查看所有环境变量 |
echo $PATH | 查看单个环境变量(如 PATH) |
export VAR=value | 设置临时环境变量(当前会话有效) |
echo 'export VAR=value' >> ~/.bashrc | 将变量写入配置文件(永久生效) |
source ~/.bashrc | 重新加载配置文件,使变量立即生效 |
八、🔐 权限与用户管理
命令 | 说明 |
---|---|
chmod 755 文件名 | 修改文件权限(rwxr-xr-x) |
chmod +x 脚本.sh | 给文件添加可执行权限 |
chown user:group 文件名 | 修改文件所有者和所属组 |
sudo 命令 | 以超级用户权限执行命令 |
passwd 用户名 | 修改用户密码 |
九、🔄 服务管理(systemd)
命令 | 说明 |
---|---|
sudo systemctl start 服务名 | 启动服务(如 nginx , myapp ) |
sudo systemctl stop 服务名 | 停止服务 |
sudo systemctl restart 服务名 | 重启服务 |
sudo systemctl reload 服务名 | 重载配置(不中断服务) |
sudo systemctl status 服务名 | 查看服务运行状态与日志片段 |
sudo systemctl enable 服务名 | 设置开机自启 |
sudo systemctl disable 服务名 | 禁用开机自启 |
systemctl list-units --type=service --state=running | 列出所有正在运行的服务 |
sudo journalctl -u 服务名 | 查看服务完整日志 |
sudo journalctl -f -u 服务名 | 实时跟踪服务日志 |
自定义服务文件模板(/etc/systemd/system/myapp.service
)
ini
[Unit]
Description=My Custom Application
After=network.target
Wants=network.target
[Service]
Type=simple
User=myuser
Group=myuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=always
RestartSec=10
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
部署流程:
bash
sudo nano /etc/systemd/system/myapp.service # 编写服务文件
sudo systemctl daemon-reload # 重载 systemd 配置
sudo systemctl start myapp # 启动服务
sudo systemctl enable myapp # 设置开机自启
sudo systemctl status myapp # 检查状态
sudo journalctl -u myapp -f # 实时查看日志
✅ 最佳实践:
- 使用非 root 用户运行服务
ExecStart
必须使用绝对路径(用which python3
查询)- 虚拟环境路径示例:
ExecStart=/home/user/app/venv/bin/gunicorn app:app
十、⏰ 定时任务(Cron)
命令 | 说明 |
---|---|
crontab -e | 编辑当前用户的定时任务 |
crontab -l | 列出当前用户的定时任务 |
crontab -r | 删除当前用户的所有定时任务(⚠️谨慎!) |
Cron 表达式格式(5 个时间字段):
# 分 时 日 月 周 命令
# * * * * * /path/to/command
常见示例:
bash
# 每天凌晨 2 点备份数据库
0 2 * * * /usr/bin/mysqldump -u root -pMyPass db > /backup/db_$(date +\%F).sql
# 每 5 分钟检查 Nginx 是否运行
*/5 * * * * systemctl is-active nginx || systemctl start nginx
# 每周一上午 9 点清理 7 天前的日志
0 9 * * 1 find /var/log -name "*.log" -mtime +7 -delete
⚠️ 注意:在
crontab
中%
需转义为\%
,否则会被视为换行符。
系统级定时任务目录(无需 crontab -e
)
目录 | 执行频率 |
---|---|
/etc/cron.hourly/ | 每小时执行一次 |
/etc/cron.daily/ | 每天执行一次 |
/etc/cron.weekly/ | 每周执行一次 |
/etc/cron.monthly/ | 每月执行一次 |
脚本需有执行权限:
chmod +x /etc/cron.daily/mybackup
✅ 使用建议:
- 新手优先掌握:
ls
,cd
,grep
,ps
,systemctl
,crontab
,scp
,tar
- 所有命令均可直接复制到终端运行(替换示例中的文件名/路径即可)